M.E.S.S. - Multi-Emulator Super System Copyright (C) 1998 by the MESS team ARM/RISC OS version 0.02b4, ported by Gareth S. Long Last updated: (18 Aug 1998) ** PLEASE READ THE CHANGELOG AT THE BOTTOM OF THIS FILE FOR IMPORTANT UPGRADE INFORMATION, ESPECIALLY IF YOU ARE NOTICING DIFFERENCES BETWEEN THE CURRENT MAME AND YOUR LAST VERSION ** ** PLEASE ALSO READ THE ACCOMPANYING README.TXT AND WHATSNEW.TXT RELATING TO MAME, ESPECIALLY THE BITS AT THE TOP IN CAPITAL LETTERS, IN MUCH THE SAME WAY AS YOU ARE READING THIS NOW ** AND READ THEM EVERY TIME THIS FILE IS UPDATED. *** PLEASE, PLEASE, PLEASE MAKE SURE YOU ACTUALLY DID THE ABOVE *** ... I'LL BE ABLE TO TELL... One more note: People doing magazine articles and things; please let me know in advance! Publishers lead times mean you're probably writing a retro retro into the world of retro gaming by the magazine hits the subscribers even. I can give accurate information on events to coincide correctly with publication dates. What is it? =========== MESS is a multiple console/computer system emulator. It is largely a derivitave of the MAME project, but geared away from 'only' arcade machine emulation. In many ways, technically, there are similarities, but there are enough differences to warrant a different style of project to handle some of the different characteristics, such as keyboards, floppy drives, serial ports, and the like. MESS serves a a documentation project, like MAME, though one of the fundamental differences between MAME and MESS is the relative complexity of the drivers - under MAME< one driver typically runs one specific arcade machine type, MESS system drivers are responsible for running literally thousands of game/computer images in themselves, and evolve more slowly. MAME works on the principle of multiple drivers for specific arcade machines, 'MAME pacman' runs pacman, for example. MESS works with 'system drivers', which emulate a complete console/computer system. Ruynning a system on it's own is not often very exiting - ifyou're lucky, you'll end up at the startup prompt on a computer system, or in the case of a console, you get little or nothing - as you're 'emulating' turning a machine on without it's cartridge ROMs. In order to get the emulation to do something interesting, you'll need some Images for the system you're trying to use - in the case of the Genesis driver, your images are Genesis ROM images. In the case of the TRS80 driver, your images are TRS80 floppy disc images, and so on. For most computers and some consoles, you'll need to get hold of a copy of the BIOS ROM(s). Not having ehse us like trying to turen the original machine on, with the BIOS ROMs removed. What do I need? =============== Best results are obtained with a StrongARM based Risc PC. Sorry, but versions of MESS for other machines are only really usable on a midrange pentiums or similarly specced machine, or above for some systems. Having said that, ARM 710 users shouldn't have much of a problem with some of the simpler systems. I am committed to making MAME more usable on lower-ended machines. Honestly: MESS will work on older machines, but the palette will be completely wrong at the moment for reasons I will describe below. Expect this to change soon, however. Systems, Images, getting Images =============================== The 'Images' has a different meaning depending on which system in MESS you are dealing with. Either way, these are fairly widely available via the internet. In order to use the images legally, you should own the image on it's original media, and you shouldn't just go picking them up via sites like http://www.davesclassics.com or just doing a web search... so I'm sure you won't - though it's worth checking to see if the images have been released into the public domain. Additionally, lots of 'home brew' titles are available for some of the systems supported under MESS. Organising MESS =============== This will change a great deal as frontends for MESS are developed and put into play, and als0o as MAME itself evolves.. Create a directory called MESS somewhere on your hard disc. I *strongly* recommend that this directory be an image filing system archive (zipfile or TBAFS archive will do nicely, as will a DOSFS partition.. public domain utilities like X files etc also work well. You can even use StrongHelp to archive the files inside a new StrongHelp manual). This allows you to use more than 77 filenames in a directory, and also allows you to use filenames greater than 10 characters, which some games need) Unpack the contents of the MESS archive into it. Create two blank directories, called 'CFG' and 'HI', alongside the ESS executable. Unpack any images you have downloaded into directory names which match the game name (like 'sonic/smd','elite/nes' etc). These should be in the 'Images' subdirectory within your MESS directory. Your resulting directory structure should look thus (names in square brackets are directory names): [MESS] (image filing system archive) \ \ MAME (executable) DACSptX EmUtils [Images] [CFG] [HI] [... etc] | |----------| | | | sonic/smd elite/nes ... sonic3/smd mario/nes ... ewormjim/smd sonic/sms ... ... ... ... To run MESS, set your current directory to that of the MAME image filing system ardchive (double clicking on the provided SetDir obeyfile will do this for you). Usage ----- MESS system [image names] [options] for example MESS nes zelda/nes will run Zelda on the Nintendo MESS coleco dkong/rom -nosound will run Donkey Kong on the Colecovision without sound MESS trs80 boot/dsk arcade1.dsk will run the TRS80 with two disks loaded MESS cgenie games1/dsk will run the Colour Genie with one disk iamge loaded MESS kaypro k1 will run the Kaypro 2x using a set of images defined by an alias 'k1' (see below). options: -resolution XxY (default: autoselect) X and Y are width and height (ex: '-800x600') MESS goes some lengths to autoselect a good resolution. You can override MESS's choice with this option. You can use -XxY (e.g. -800x600) as a shortcut. Frontend authors are advised to use -resolution XxY, however. If you get an error 'XxY not supported', you probably need Scitech's Display Doctor, which provides the 'de facto' standard VESA implementaion (http://www.scitechsoft.com) Some common resolutions are 320x200, 320x240, 400x300, 512x384, 640x400, 640x480, 800x600 and 1024x768. -skiplines N since many games use a screen taller than 240 lines, they won't fit in the screen. The parameter 'N' sets the initial number of lines to skip at the top of the screen. You can adjust the position while the game is running using the PGUP and PGDN keys. -skipcolumns N same as above but moves the screen horizontally. This is rarely used since the screen usually fits in the screen. To adjust the position at run time, use SHIFT + PGUP/PGDN. -double / -nodouble (default: auto) use nodouble to disable pixel doubling (faster, but smaller picture). Use double to force pixel doubling when the image doesn't fit in the screen (you'll have to use PGUP and PGDN to scroll). -depth n (default: 8) Some games might need 65k color modes to get accurate graphics. You might want to use -depth 16 for that case. -h n Use hz to force a specific framerate when attempting to set a RISC OS mode, -1 means 'any framerate will do'. If the RISC OS port of MESS cannot find a set framerate for a given resolution, it will search for another resolution. -vsync / -novsync (default: -novsync) syncronize video display with the video beam instead of using the timer. This option can only be used if the selected video mode has an appropriate refresh rate; MESS will otherwise refuse to start, telling you the actual refresh rate of the video mode, and the rate it should have. If you are using a tweaked mode, MESS will try to automatically pick the correct setting for refresg frequency; you can still override it using the -hz option. -sr n set the audio sample rate. The default is 22050. Smaller values (e.g. 11025) will cause lower audio quality but faster emulation speed. Higher values (e.g. 44100) will cause higher audio quality but slower emulation speed. -sb n set the audio sample bits, either 8 or 16. The default is 8. 16 will increase quality with certain games, but decrease speed. This is a software setting, not hardware. The sound card will always be used in 16 bit mode, if possible. -fm / -nofm (default: -nofm) use the SoundBlaster OPL chip for music emulation in some games. Under RISC OS, this will disable FM as a SoundBlaster OPL chip is not available to anything less than a Phoebe/Smelly Cat 2100. -log create a log of machine startup information, illegal memory accesses and other details in ERROR/LOG The amount of output depends on verbosity defined in the drivers and is set relatively low for the release version. -help, -? display current mess version and copyright notice -list display a list of currently supported games -listfull display a list of game directory names + description -listdetails display a detailed list of drivers and the hardware they use -mouse / -nomouse (default: -mouse) enable/disable mouse support -frameskip n skip frames to speed up the emulation. For example, if the game normally runs at 60 fps, "-frameskip 1" will make it run at 30 fps, and "-frameskip 2" at 20 fps. Use F11 to check the speed your computer is actually reaching. If the game is too slow, increase the frameskip value. Note that this setting can also affect audio quality (some games sound better, others sound worse). Maximum value for frameskip is 3. -cheat The cheat system is disabled by default. Use this switch to turn it on. Read cheat.doc for more information on how to use the cheat system. -debug Activate the integrated debugger. During the emulation, press tilde to enter the debugger. -record name Record joystick input on file INP/name.inp. -playback name Playback joystick input from file INP/name.inp. -ignorecfg ignore mess.cfg and start with the default settings The following keys work in all emulators: Tab Enter configuration menu. Press Tab or Esc to get back to the emulation. ScrollLock Pause F5 Show the game graphics. Use cursor keys to change set/color, F5 or Esc to return to the emulation. F7 Calibrate the joystick F8 Change frame skip on the fly (60, 30, 20, or 15) F9 Reset the emulation F10 Toggle speed throttling F11 Toggle speed display F12 Save a screen snapshot. This is currently undefined whilst we work on a uniform method of saving (and it'll probably be PNG). numpad +/- Volume adjust Left shift and numpad +/- Gamma correction adjust Shift-F12 Exit emulator Format of the configuration file mess.cfg: This file defines general (and optionally driver specific) settings for various aspects of the emulation. It contains sections, ie. names enclosed in square brackets like [config], [directory] or [drivername]. These sections contain one or more lines of the form 'variable = value'. The value can be either text or numeric, depending on the option. Boolean options accept 'yes', 'no'. Some options accept 'auto' to let MESS decide what to choose. The following settings are recognized in the [config] section: scanlines = yes|no same as -scanlines / -noscanlines command line options double = auto|yes|no same as -double / -nodouble command line options vsync = yes|no same as -vsync / -novsync command line options syncedtweak = yes vesa = no same as -vesa / -novesa command line options ntsc = no 'yes' is the same as -ntsc command line option vgafreq = 0 same as -vgafreq n command line option depth = 8|16 same as -depth n command line option skiplines = 0 same as -skiplines n command line option skipcolumns = 0 same as -skipcolumns n command line option gamma = G set gamma correction G = 0.5 - 2.0 frameskip = 0|1|2|3 set default frame skip value soundcard = n select a soundcard (-1 always ask, 0 none, 1 - 7 set) oplfm = yes|no use soundblaster OPL chip (same as -fm / -nofm options) samplerate = n same as -samplerate n (or -sr n) command line option samplebits = n same as -samplebits n (or -sb n) command line option mouse = yes|no same as -mouse / -nomouse command line options joytype = n select a joystick (-1 none, 0 - 5 select ) cheat = yes|no 'yes' is the same as -cheat command line option debug = yes|no only for developers (same as -debug option) resolution = auto|XxY select a resolution (automatic or fixed X by Y pixels) It is possible to override this global settings for every driver in it's own section. If you want eg. the Vectrex driver to use a 1024x768 resolution, a gamma correction of 1.5 and no sound you would add a section: [vectrex] resolution = 1024x768 gamma = 1.5 soundcard = 0 Another option for the driver specific sections is 'aliases'. It allows you to specify a set of ROMs or disk images with a short name, eg.: [trs80] arcade = boot.dsk arcade1.dsk arcade2.dsk arcade3.dsk Now you can call 'mess trs80 arcade' and have all four disks inserted. Miscallanea =========== Unless you specify otherwise, MESS will attempt to pick the correct display resolution for you given your monitor type, and choose the next nearest if that fails. Most games require 224x288. holding down CONTROL during startup will allow you to see some of the diagnostic messages giving information on what mode MESS found suitable. On a Risc PC, you can define your own modes using !MakeModes to make the best use of your monitor. The best method of setting up perfect modes for MAME are as follows: 1) Get a copy of something like !MakeModes, !CustomVDU or whatever, from any good Acorn-related FTP site (!MakeModes is available from ftp.acorn.co.uk). 2) Define a mode of either the exact size you need (eg 224x288) or one with *twice* the Y resolution so that you can use -double (and -scanlines if you like) - modes defined this way are likely to have a lower refresh rate and might perform a little better. It doesn't take an experienced modesman to define up a mode that'll work fine with your monitor type - just fiddle with a resolution reasonably close to what you're aiming for. Pass your examples of professional modesmanship to me and I'll include them with the distribution, I shall provide some ready-made monitor definition files I've defined for common monitortypes soon. History ======= A list of doings that have been transpiring, from the beginning: [Undated] Pre-MESS release development by mysel and the rest of the MESS team. [03 Jun 1998] (MESS 0.01) First release of MESS, for any platform.. This file is extremely prelininary, as I have to update both my MAME and MESS documents to achieve some level of synchronicity. This, in addition to the latest RISC OS MAME readme, should give you some idea as what to do. Any problems, contact me: gatch@elecslns.demon.co.uk Note that the keyboard system is undergoing a lot of revision at the moment, due to it having to handle computers! [17-Aug-98] (MESS 0.02 beta 4) Various enhancements and bugfixes. Keyboard support should be a lot better, also note changes in the default key mappings for some functions, notably exitting the emulator! [18-Aug-98] Various documentation changes. There are now 10 levels of frameskip available (0-9). Frameskip value is shown within the speed indicator. Please note that as beta 4 was made available, I was halfway through writing a new Genesis renderer which makes use opf tricks to improve speed. However, the FM support added in this version slows to Genesis driver to a completely unusable rate on ARM systems due to the extensive double precision floating point usage - I need to incorporate a fixed point library for this. Sega Master system emulation is flaky to say the least in this beta. wd179x floppy controller emulation is not present in this release of ARM MESS - I'm not releasing it until I'm certain it isn't likely to screw up anyone's floppy discs... The next release is likely to coincide with the optimisation drive throughout the core to benefit performance on ARM-based systems. This should hopefully significantly improve speed. Recently, floating point activity has increased within the project to the detrement of ARM-based systems, I will try to reduce the effects of this as far as I can.